/**
 * @file JSON_app.h
 * @brief 定义与 JSON 数据处理相关的结构体和函数接口声明。
 *
 * 此头文件包含了用于描述设备信息、环境信息、设备状态以及控制命令的结构体定义,
 * 同时声明了将设备结构体数据转换为 JSON 字符串的函数。
 *
 * @author Limo
 * @date 2025-5-3
 */

#ifndef _JSON_APP_H
#define _JSON_APP_H

#include <stdbool.h>
#include "cJSON.h"

// #define JSON_BUFFER_SIZE 1024

// 定义 Power 结构体,用于存储设备的功率相关信息
typedef struct
{
    float W; // 功率
    float I; // 电流
    float U; // 电压
} Power;

// 定义 Env 结构体,用于存储环境信息
typedef struct
{
    float tem; ///< 温度
    float hum; ///< 湿度
    float lux; ///< 光照强度
} Env;

// 定义 Status 结构体,用于存储设备的状态信息
typedef struct
{
    char door[10];   ///< 门的状态
    char window[10]; ///< 窗的状态
    char light[10];  ///< 灯的状态
} Status;

// 定义 DeviceData 结构体,用于存储设备的综合信息
typedef struct
{
    char id[20];   ///< 设备 ID
    char time[20]; ///< 时间
    Power power;   ///< 设备的功率信息
    Env env;       ///< 设备所处的环境信息
    Status status; ///< 设备的状态信息
} DeviceData;

void *cjson_freertos_malloc(size_t size);
void cjson_freertos_free(void *ptr);
char *CreateDeviceJSON(const DeviceData *data);
void cJSON_APP_Init(void);


#endif
